package kotlin05.src.main.java.com.example.kotlin05.s01

/**
 * 3.泛型扩展函数
 *
 *  新的泛型扩展函数不仅可以支持任何类型的接收者，还保留了接收者的类型信息
 *  使用泛型类型后，扩展函数能够支持更多类型的接收者，使用范围更广了
 *
 *
 *  TODO:泛型扩展函数，在kotlin标准库中随处可见，例如 let函数，let函数
 *  TODO:被定义成了泛型扩展函数，所以支持任何类型，在任何地方随时可以调用的到，它接受一个lambda表达式，
 *  TODO:这个lambda表达式接收者T 作为值参，返回R-lambda表达式返回的任何新类型
 *
 *
 *
 */
fun main() {

    "abc".easyPrint2().addExt(2).easyPrint()
    15.also {  }

}

//扩展string的方法
//给字符串追加若干个 ！！
fun String.addExt3(amount:Int = 1) =  this + "!".repeat(amount)

//扩展超类方法
fun <T> T.easyPrint3() : T {
    println(this)
    return this

}
